home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr48 / ifp1s157.zip / PAGE_14.PAS < prev    next >
Pascal/Delphi Source File  |  1993-06-26  |  3KB  |  123 lines

  1. unit page_14;
  2.  
  3. interface
  4.  
  5. uses crt, ifpglobl, ifpcomon;
  6.  
  7. procedure page14;
  8.  
  9. implementation
  10.  
  11. procedure page14;
  12.   var
  13.     drive : byte;
  14.     NoDisks : boolean;
  15.     xbyte1 : byte;
  16.     xbyte2 : byte;
  17.  
  18.   begin
  19.   Caption2('BIOS disk parameters');
  20.   NoDisks:=true;
  21.   for drive:=$00 to $FF do
  22.     with regs do
  23.       begin
  24.       AH:=$08;
  25.       DL:=drive;
  26.       Intr($13, regs);
  27.       if nocarry(regs) and ((BL > $00) or (drive >= $80)) and (DL > 0) then
  28.         begin
  29.         if NoDisks then
  30.           begin
  31.           NoDisks:=false;
  32.           Writeln;
  33.           Caption3('Unit');
  34.           Writeln;
  35.           Caption3('Type');
  36.           Writeln;
  37.           Caption3('Drives');
  38.           Writeln;
  39.           Caption3('Heads');
  40.           Writeln;
  41.           Caption3('Cylinders');
  42.           Writeln;
  43.           Caption3('Sectors/track');
  44.           Writeln;
  45.           Caption3('Specify bytes');
  46.           Writeln;
  47.           Caption3('Off time (s)');
  48.           Writeln;
  49.           Caption3('Bytes/sector');
  50.           Writeln;
  51.           Caption3('Sectors/track');
  52.           Writeln;
  53.           Caption3('Gap length');
  54.           Writeln;
  55.           Caption3('Data length');
  56.           Writeln;
  57.           Caption3('Gap length for format');
  58.           Writeln;
  59.           Caption3('Fill byte for format');
  60.           Writeln;
  61.           Caption3('Head settle time (ms)');
  62.           Writeln;
  63.           Caption3('On time (ms)');
  64.           Writeln;
  65.           xbyte1:=27;
  66.           end;
  67.         if xbyte1 + 10 > twidth then
  68.           begin
  69.           pause1;
  70.           if endit then
  71.             Exit;
  72.           xbyte1:=27;
  73.           Window(xbyte1, 4, twidth, tlength - 2);
  74.           ClrScr
  75.           end;
  76.         Window(xbyte1, 4, xbyte1 + 11, tlength - 2);
  77.         Writeln(drive);
  78.         if drive < $80 then
  79.           case BL of
  80.             $01 : Writeln('360KB 5¼"');
  81.             $02 : Writeln('1.2MB 5¼"');
  82.             $03 : Writeln('720KB 3½"');
  83.         $04 : Writeln('1.44MB 3½"');
  84.         $05 : Writeln('2.88MB 3½"')
  85.       else
  86.         Writeln('(', Hex(BL, 2), ')')
  87.       end
  88.     else
  89.       Writeln('fixed disk');
  90.     Writeln(DL);
  91.         Writeln(DH + 1);
  92.         Writeln(cbw(CH, CL shr 6) + 1);
  93.         Writeln(CL and $3F);
  94.         if drive < $80 then
  95.           begin
  96.           Writeln('$', Hex(Mem[ES : DI], 2), ' $'
  97.             , Hex(Mem[ES : DI + $0001], 2));
  98.           Writeln(longint(Mem[ES : DI + $0002]) shl 16 / tick1 : 0
  99.             : 1);
  100.           xbyte2:=Mem[ES : DI + $0003];
  101.           case xbyte2 of
  102.             $00 : Writeln('128');
  103.             $01 : Writeln('256');
  104.             $02 : Writeln('512');
  105.             $03 : Writeln('1024')
  106.           else
  107.             Writeln('(', Hex(xbyte2, 4), ')')
  108.           end;
  109.           Writeln(Mem[ES : DI + $0004]);
  110.           Writeln(Mem[ES : DI + $0005]);
  111.           Writeln(Mem[ES : DI + $0006]);
  112.           Writeln(Mem[ES : DI + $0007]);
  113.           Writeln('$', Hex(Mem[ES : DI + $0008], 2));
  114.           Writeln(Mem[ES : DI + $0009]);
  115.           Writeln(125 * Mem[ES : DI + $000A])
  116.           end;
  117.         inc(xbyte1, 13)
  118.         end
  119.       end;
  120.   if NoDisks then
  121.     Writeln('(no disks)')
  122.   end;
  123. end.